/** axios封装
 * 请求拦截、相应拦截、错误统一处理
 */
 import axios from 'axios'
 import QS from 'qs'
//  import router from '../../router'
//  import store from '../../store/index'
 
 // 设置请求服务器地址
 axios.defaults.baseURL = process.env.VUE_APP_BASE_API
 
 // 请求超时时间
 axios.defaults.timeout = 60000
 
 // post请求头
 axios.defaults.headers.post['Content-Type'] =
   'application/x-www-form-urlencoded;charset=UTF-8'
 
//  const successHandle = data => {
//    console.log(data)
//    // 状态码判断
//  }
 
//  const errorHandle = data => {
//    // 状态码判断
//    console.log(data)
// //    if (data.code === 0) {
// //      localStorage.removeItem('token')
// //      router.push({ path: '/login' })
// //    }
//  }
 
 // 请求拦截器
 axios.interceptors.request.use(
   config => {
     // 每次发送请求之前判断是否存在token，如果存在，则统一在http请求的header都加上token
     // 即使本地存在token，也有可能token是过期的，所以在响应拦截器中要对返回状态进行判断
    //  const token = localStorage.getItem('token')
    //  token && (config.headers.token = token)
     return config
   },
   error => {
     return Promise.error(error)
   }
 )
 
 // 响应拦截器
 
 axios.interceptors.response.use(
   res => {
     if (res.status === 200) {
    //    store.state.isLoading = false
       if (res.data.status === 0) {
        //  successHandle(res.data)
         return Promise.resolve(res)
       } else {
        //  errorHandle(res.data)
         return Promise.resolve(res)
       }
     } else {
    //    store.state.isLoading = false
       return Promise.reject(res)
     }
   },
   // 接口错误状态处理，也就是说无响应时的处理
   error => {
    //  store.state.isLoading = false
     return Promise.reject(error) // 返回接口返回的错误信息
   }
 )
 
 /**
  * get方法，对应get请求
  * @param {String} url [请求的url地址]
  * @param {Object} params [请求时携带的参数]
  */
 export function get (url, params) {
   return new Promise((resolve, reject) => {
     axios
       .get(url, {
         params: params
       })
       .then(res => {
         resolve(res.data)
       })
       .catch(err => {
         reject(err.data)
       })
   })
 }
 /**
  * post方法，对应post请求
  * @param {String} url [请求的url地址]
  * @param {Object} params [请求时携带的参数]
  */
 export function post (url, params) {
   return new Promise((resolve, reject) => {
     axios
       .post(url, QS.stringify(params))
       .then(res => {
         resolve(res.data)
       })
       .catch(err => {
         reject(err.data)
       })
   })
 }
 